package de.cms.kff.ctrl;

import java.util.Date;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import de.cms.kff.dao.MitarbeiterDao;
import de.cms.kff.model.Mitarbeiter;

@Controller
public class MitarbeiterController {
	private static Logger log = Logger.getLogger(MitarbeiterController.class);
	private MitarbeiterDao mitarbeiterDao = null; //warum gleich null?

    public void setMitarbeiterDao(MitarbeiterDao mitarbeiterDao) {
		this.mitarbeiterDao = mitarbeiterDao;
	}

    @RequestMapping(value="/EditMitarbeiter.html", method=RequestMethod.GET)
    public ModelAndView edit(@RequestParam(required=false) Integer id) {
    	log.debug("EditMitarbeiter.html");
    	ModelAndView mv = new ModelAndView();
    	if (id == null) {
    		mv.addObject(new Mitarbeiter());
    	} else { 
    		mv.addObject(mitarbeiterDao.findById(id));
    	}
    	mv.setViewName("edit-mitarbeiter");
    	return mv;
    }
    
    /**
     * <p>Saves a person.</p>
     * 
     * <p>Expected HTTP POST and request '/SavePerson.html'.</p>
     * @return 
     */
    @RequestMapping(value="/SaveMitarbeiter.html", method=RequestMethod.POST)
    public String save(Mitarbeiter mitarbeiter, Model model) {
        if (mitarbeiter.getCreated() == null) {
            mitarbeiter.setCreated(new Date());
        }
        Mitarbeiter result = mitarbeiterDao.save(mitarbeiter);
        // set id from create
        if (mitarbeiter.getId() == null) {
            mitarbeiter.setId(result.getId());
        }
        model.addAttribute("statusMessageKey", "person.form.msg.success");
        return "redirect:AlleMitarbeiter.html";
    }

    /**
     * <p>Deletes a person.</p>
     * 
     * <p>Expected HTTP POST and request '/LoeschePerson.html'.</p>
     */
    @RequestMapping(value="/LoescheMitarbeiter.html", method=RequestMethod.GET)
    public String delete(Mitarbeiter mitarbeiter) {
        mitarbeiterDao.delete(mitarbeiter);
        return "redirect:AlleMitarbeiter.html";
    }

    /**
     * <p>Searches for all persons and returns them in a 
     * <code>Collection</code>.</p>
     * 
     * <p>Expected HTTP GET and request '/AllePersonen.html'.</p>
     */
    @RequestMapping(value="/AlleMitarbeiter.html", method=RequestMethod.GET)
    public ModelAndView findAll() {
		ModelAndView mv = new ModelAndView();
		mv.addObject("title", "Mitarbeiter");
		mv.addObject("message", "Folgende Mitarbeiter sind im Unternehmen vorhanden");
		mv.addObject("mitarbeiterList", mitarbeiterDao.findAll());
		mv.setViewName("list-mitarbeiter");
		return mv;
    }

}
